/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo;

import clases.Proveedor;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author edder
 */
public class MdlProveedor implements Modelo<Proveedor>{

    /**
     * Inserta Proveedor en la BD
     * @param objeto
     * @param cnx
     * @throws SQLException
     */
    @Override
    public void insert(Proveedor objeto, Conexion cnx) throws SQLException {
        String sql = "INSERT INTO proveedor(nombre, preventa, mercaderista, direccion, telefono, descripcion) "
                + "VALUES('" + objeto.getNombre() + "', "
                + "'" + objeto.getPreventa() + "', "
                + "'" + objeto.getMercaderista() + "', "
                + "'" + objeto.getDireccion() + "', "
                + "'" + objeto.getTelefono() + "', "
                + "'" + objeto.getDescripcion() + "');";
        cnx.ejecutar(sql);
    }

    /**
     * Obtiene el último ID
     * @param cnx
     * @return
     * @throws SQLException
     */
    @Override
    public int getLastId(Conexion cnx) throws SQLException {
        String sql = "SELECT MAX(idProveedor) FROM proveedor";
        ResultSet rs = cnx.consultar(sql);
        if(rs.next())
            return rs.getInt(1);
        return -1;
    }

    /**
     * Actualiza proveedor
     * @param objeto
     * @param cnx
     * @throws SQLException
     */
    @Override
    public void update(Proveedor objeto, Conexion cnx) throws SQLException {
        String sql = "UPDATE proveedor SET "
                + "nombre = '" + objeto.getNombre() + "', "
                + "preventa = '" + objeto.getPreventa() + "', "
                + "mercaderista = '" + objeto.getMercaderista() + "', "
                + "direccion = '" + objeto.getDireccion() + "', "
                + "telefono = '" + objeto.getTelefono() + "', "
                + "descripcion = '" + objeto.getDescripcion() + "' "
                + "WHERE idProveedor = " + objeto.getIdProveedor() + ";";
        cnx.ejecutar(sql);
    }
    
    public ArrayList<Proveedor> getProveedores_nombre(String query, Conexion cnx) throws SQLException{
        String sql = "SELECT * FROM proveedor "
                + "WHERE nombre LIKE '%" + query + "%';";
        return this.get(sql, cnx);
    }
    
    public ArrayList<Proveedor> getProveedores_busqueda(String query, Conexion cnx) throws SQLException{
        String sql = "SELECT * FROM proveedor "
                + "WHERE nombre LIKE '%" + query +"%' "
                + "OR preventa LIKE '%" + query +"%' "
                + "OR mercaderista LIKE '%" + query +"%' "
                + "OR direccion LIKE '%" + query +"%' "
                + "OR telefono LIKE '%" + query +"%' "
                + "OR descripcion LIKE '%" + query +"%';";
        return this.get(sql, cnx);
    }

    /**
     * Obtiene lista de Proveedor, según String query
     * @param query
     * @param cnx
     * @return
     * @throws SQLException
     */
    @Override
    public ArrayList<Proveedor> get(String query, Conexion cnx) throws SQLException {
        ArrayList<Proveedor> proveedores = new ArrayList<>();
        ResultSet rs = cnx.consultar(query);
        while(rs.next()){
            proveedores.add(new Proveedor(
                    rs.getInt("idProveedor"),
                    rs.getString("nombre"),
                    rs.getString("preventa"),
                    rs.getString("mercaderista"),
                    rs.getString("direccion"),
                    rs.getString("telefono"),
                    rs.getString("descripcion"))
            );
        }
        return proveedores;
    }

    /**
     * Obtiene proveedor según id
     * @param id
     * @param cnx
     * @return
     * @throws SQLException
     */
    @Override
    public Proveedor get(int id, Conexion cnx) throws SQLException {
        String sql = "SELECT * FROM proveedor WHERE idProveedor = " + id;
        ResultSet rs = cnx.consultar(sql);
        if(rs.next())
            return new Proveedor(
                    rs.getInt("idProveedor"),
                    rs.getString("nombre"),
                    rs.getString("preventa"),
                    rs.getString("mercaderista"),
                    rs.getString("direccion"),
                    rs.getString("telefono"),
                    rs.getString("descripcion"));
        return null;
    }
    
    
}
